/*������� ����������� ������ ��������� A :
Sort(A, p, r)
1 if p < r
	2    then           q : = round_half_down((p + r) / 2)
	3                       Sort(A, p, q)
	4                       Sort(A, q + 1, r)
	5                       Merge(A, p, q, r)

	������ ������� :
A = (5, 2, 4, 6, 1, 3, 2, 6)

������� ������� :
Sort(A, 1, length[A])


���������� :
����������� �������� ������� Merge(A, p, q, r) �� ����� ������� ��� �����, 
� �������������� �������������� ������ ��� ��� ���, ��� ��� ����� ������� 
��� ������� � ����������.*/

#include "Sort.h"
#include <iostream>

/*
���������� �������� Merge ��� ���������� �� �����������, ������ Merge, ����������� � ������ 
������������ ������� �������: Sort(A, 1, length[A]) - � ������ �������, ��� ��� ����������,
�������� ������ �� ���������� ������� �� ������� �������� �� ����������, �������
� Merge ������� �������������� ������������� ������� �������� � ����� � ���, ��� ��������� � ������� ���������� � 0.

��� ����������������� ����� � ������ ��������������, � 
�������� ���������� ������������� ������ ���������� �������.

������� ����������� � ��������� ��������, ��������� ������ ����������� ���������� � ����� ���� ������������
��� �������� � ������ ����������, ��� ������� ���������� ����������� ��������� � �����������.

*/

int main()
{
	std::array<int, 8> arr{ 5, 2, 4, 6, 1, 3, 2, 6 };//���������� �������� ������� �� �������
	
	Sort(arr, 1, arr.size());
	
	for (auto& x : arr) {
		std::cout << x << " ";
	}
	std::cout << std::endl;
	return 0;
}